/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.pedidos.servidor.mb;

import br.com.pedidos.servidor.entity.Mesa;
import br.com.pedidos.servidor.entity.Pedido;
import br.com.pedidos.servidor.rn.MesaRN;
import br.com.pedidos.servidor.rn.PedidoRN;
import br.com.pedidos.servidor.util.Monetario;
import java.io.Serializable;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

/**
 *
 * @author Weslley
 */
@ManagedBean
@ViewScoped
public class MesaMB implements Serializable {

    private static final long serialVersionUID = 1L;

    private MesaRN mesaRN;
    private PedidoRN pedidoRN;
    
    private Mesa mesa;
    private Pedido pedidoSelecionado;
    private float totalCliente;

    public MesaMB() {
        pedidoRN = new PedidoRN();
        mesaRN = new MesaRN();
        mesa = new Mesa();
    }

    public void cadastrarMesa() {
        mesaRN.salvaMesa(mesa);

        mesa = new Mesa();
    }

    public List<Pedido> getListaPedidos(int numero) {
        totalCliente = 0;
        List<Pedido> pedidos = pedidoRN.listaPedidosPorMesaAberta(numero);

        int cont = 1 ;
        for (Pedido pedido : pedidos) {
            pedido.setNumeroPedido(cont++);
            totalCliente = totalCliente + pedido.getTotal();
        }
        return pedidos;
    }
    
    public String valorTotalConta(int numero){
        List<Pedido> pedidos =  listaPedidosAtendidos(numero);
        BigDecimal valorTotal = BigDecimal.ZERO;
        for (Pedido pedido : pedidos) {
            valorTotal=Monetario.somar(valorTotal, new BigDecimal(pedido.getTotal()));
        }
        return Monetario.toMoney(valorTotal);
    }
    
    private List<Pedido> listaPedidosAtendidos(int numero) {
        List<Pedido> pedidos = pedidoRN.listaPedidosAtendidosPorMesa(numero);
        return pedidos;
    }

    public Mesa getMesa() {
        return mesa;
    }

    public void setMesa(Mesa mesa) {
        this.mesa = mesa;
    }

    public Pedido getPedidoSelecionado() {
        return pedidoSelecionado;
    }

    public void setPedidoSelecionado(Pedido pedidoSelecionado) {
        this.pedidoSelecionado = pedidoSelecionado;
    }

    public float getTotalCliente() {
        return totalCliente;
    }
    
    public String getTotalFormatado() {
        if (totalCliente != 0) {
            DecimalFormat df = new DecimalFormat("###0.00");
            return df.format((float) totalCliente);
        }
        return "";
    }

    public void setTotalCliente(float totalCliente) {
        this.totalCliente = totalCliente;
    }

}
